home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.26
/
filereq
/
filereq.unit.p
< prev
next >
Wrap
Text File
|
1995-04-23
|
4KB
|
156 lines
UNIT filereq;
{$Projekt MyTools}
INTERFACE
USES Intuition;
TYPE STRING100=STRING[100];
FUNCTION arpreq(titel:STR; VAR Datei,Pfad:String100;wo:p_window):BOOLEAN;
FUNCTION OpenArp(version : Integer) : BOOLEAN;
PROCEDURE CloseArp;
FUNCTION aslreq(titel:STR; VAR Datei,Pfad:String100;wo:p_window):BOOLEAN;
FUNCTION OpenAsl(version : Integer) : BOOLEAN;
PROCEDURE CloseAsl;
FUNCTION libversion(versionsnummer:SHORT):BOOLEAN;
FUNCTION req(titel:STR; VAR Datei,Pfad:String100;wo:p_window):BOOLEAN;
IMPLEMENTATION
{$incl "libraries/asl.h", "asl.lib"}
TYPE
arpFilerequester=RECORD
FR_Hail : STR;
FR_File : PTR;
FR_Dir : PTR;
FR_Window : p_window;
FR_Funcflags : Byte;
FR_Reserved : Byte;
FR_Function : PTR;
FR_Reserved2 : LONG;
END;
VAR Requ : p_FileRequester;
Tags : ARRAY[0..4] OF TagItem;
ArpBase : PTR;
LIBRARY ArpBase:
-294:FUNCTION Filerequest(a0:PTR):LONG;
END;
FUNCTION libversion;
VAR lib:p_library;
BEGIN
lib:=intuitionbase;
libversion:=(lib^.lib_version>=versionsnummer);
END;
FUNCTION OpenArp;
BEGIN
ArpBase := OpenLibrary("arp.library",version);
IF ArpBase = NIL THEN OpenArp := False ELSE OpenArp := True;
END;
PROCEDURE CloseArp;
BEGIN
IF ArpBase <> NIL THEN CloseLibrary(ArpBase);
ArpBase := NIL;
END;
FUNCTION OpenASL;
BEGIN
AslBase := OpenLibrary(ASLNAME,version);
IF AslBase = NIL THEN OpenAsl := False ELSE OpenAsl := True;
END;
PROCEDURE CloseASL;
BEGIN
IF AslBase <> NIL THEN CloseLibrary(AslBase);
AslBase := NIL;
END;
FUNCTION aslreq;
VAR p_datei,p_pfad:^STRING100;
BEGIN
p_datei:=^datei;
p_pfad :=^pfad;
aslreq:=FALSE;
IF OpenASL(36) THEN
BEGIN
Tags[0]:=TagItem(ASL_Hail,LONG(titel));
Tags[1]:=TagItem(ASL_File,LONG(p_datei));
Tags[2]:=tagItem(ASL_Dir,LONG(p_pfad));
Tags[3]:=TagItem(ASL_window,LONG(wo));
Tags[4].ti_tag:=TAG_DONE;
Requ:=AllocAslRequest(ASL_FileRequest,^Tags);
IF Requ<>NIL THEN
BEGIN
IF aslrequest(Requ,^tags) THEN
BEGIN
p_Pfad:=Requ^.rf_Dir;
pfad:=p_pfad^;
IF (pfad<>'') AND (pfad[length(pfad)] <> ':')
AND (pfad[length(pfad)] <> '/')
THEN pfad:=pfad+'/';
p_datei:=Requ^.rf_File;
datei:=p_datei^;
aslreq:=TRUE;
END
ELSE; {aslreq:=FALSE;} { Keine Datei angewählt }
FreeAslRequest(Requ);
END
ELSE; { Keine requesterstruktur }
END
ELSE; { keine asl.lib }
END;
FUNCTION arpreq;
VAR requesterstruktur : arpFilerequester;
p_Datei, p_Pfad : PTR;
arpdat,arppfad:STRING100;
BEGIN
IF OpenArp(0) THEN
BEGIN
arpdat:=datei;
arppfad:=Pfad;
IF (arppfad<>'') AND (arppfad[length(arppfad)]='/') THEN
arppfad[length(arppfad)]:=CHR(0);
p_Datei:=^arpDat;
p_Pfad :=^arpPfad;
Requesterstruktur:=arpFilerequester(Titel,p_Datei,p_Pfad,wo,0,0,NIL,0);
IF Filerequest(^Requesterstruktur)<>0 THEN
BEGIN
arpreq:=TRUE;
IF (arppfad<>'') AND (arppfad[length(arppfad)] <> ':')
AND (arppfad[length(arppfad)] <> '/')
THEN arppfad:=arppfad+'/';
datei:=arpdat;
pfad:=arppfad;
END
ELSE arpreq:=FALSE;
END
ELSE; { keine arpbase }
END;
FUNCTION req;
BEGIN
req:=FALSE;
IF (libversion(36) AND OpenASL(36)) THEN
BEGIN
IF aslreq(titel,Datei,Pfad,wo) THEN req:=TRUE;
END
ELSE IF arpreq(titel,Datei,Pfad,wo) THEN req:=TRUE;
END;
BEGIN
ArpBase:= NIL;
aslbase:=NIL;
END.